import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestJDBC4 {
    //通过jdbc来查询数据
//        查询需要遍历结果合集.
    public static void main(String[] args) throws SQLException {
        //1.创建DataSource
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java101?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("109614");
       //2.建立数据库连接
        Connection connection = dataSource.getConnection();
        //3.构造sql
        String sql = "select*from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4.直接执行sql
        ResultSet resultSet = statement.executeQuery();
        //5.遍历结果集合
        // 先取出结果中的每一行,再取出每一行中需要的列饥渴.
        //这个遍历的代码,非常像,迭代器遍历
        while(resultSet.next()){//类似于i++,如果遍历到最后了next就返回false,循环就结束了
            //通过 resultSet.next() 获取当前行
            //再来取每一列
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + "\t"+name);
        }
        //6.释放相关资源
        resultSet.close();
        statement.close();
        connection.close();

        /**
         * 回顾:迭代器:
         * iterator集合类
         * 很多集合都是支持迭代器(实现了iterable接口)
         * 重点：处理循环读入的问题！！！
         * 有多组输入：
         * hasNextInt（）：这是一个方法，来判断是否有下一个整数，如果有，则会返回true，否则，false；
         * while(scanner.hasNextInt()){
         * 	int x = scanner.nextInt();
         * 	System.out.println("每输入一次，就折行一次："+x);
         * }
         */
    }
}
